// Force.h: interface for the CForce class.
// Copyright (c) 2009, Dan Heeks
// This program is released under the BSD license. See the file COPYING for details.

#if !defined FORCE_HEADER_INCLUDED
#define FORCE_HEADER_INCLUDED

#pragma once

#include "interface/HeeksColor.h"
#include "interface/HeeksObj.h"
#include "HeeksCAETypes.h"

class CForce : public HeeksObj  
{
public:
	double m_p[3];
	double m_v[3];

	CForce(double x, double y, double z, double vx, double vy, double vz);
	CForce(const CForce &f);
	virtual ~CForce();

	const CForce& operator=(const CForce &f);

	// HeeksObj's virtual functions
	int GetType()const{return ForceType;}
	void glCommands(bool select, bool marked, bool no_color);
	void GetBox(CBox &box);
	const wxChar* GetTypeString(void)const{return _("Force");}
	long GetMarkingMask()const{return MARKING_FILTER_UNKNOWN;} // can be selected
	HeeksObj *MakeACopy(void)const;
	wxString GetIcon(){return theApp.GetDllFolder() + _T("/icons/force");}
	bool ModifyByMatrix(const double *mat);
	void GetTools(std::list<Tool*>* t_list, const wxPoint* p);
	bool Stretch(const double *p, const double* shift, void* data);
	void WriteXML(TiXmlNode *root);

	static HeeksObj* ReadFromXMLElement(TiXmlElement* pElem);
};

#endif
